# 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
#
# 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
#
# 假设环境不允许存储 64 位整数（有符号或无符号）。

# 法1 
class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        tmp = str(x)
        i = len(tmp) - 1
        MIN = -2 ** 31
        MAX = 2 ** 31 - 1
        if x < 0 :
            res = '-'
            while i > 0:
                res = res + tmp[i]
                i -= 1
        else:
            res = ''
            while i >= 0:
                res = res + tmp[i]
                i -= 1
        if int(res) < MIN or int(res) > MAX:
            return 0
        else:
            return int(res)

## 法2 
class Solution:
    def reverse(self, x: int) -> int:
        def rever(x: int):
            res = []
            while x > 9:
                res.append(x % 10)
                x = x // 10
            res.append(x)
            a = [str(i) for i in res]
            b = int(''.join(a))
            if b > 2 ** 31 - 1 : return 0
            return b
        if x < 0 : 
            x = -x
            return -rever(x)
        return rever(x)


if __name__ == '__main__':
    x = -123
    solution = Solution()
    res = solution.reverse(x)
    print(res)